package com.base.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.base.po.voip.Rewards;
import com.base.utils.Page;

public interface RewardsService {
	int deleteByPrimaryKey(Integer id);

	int insert(Rewards record);

	int insertSelective(Rewards record);

	int deleteByOrderId(String orderid);

	Rewards selectByPrimaryKey(Integer id);

	List<Rewards> selectByPhase(@Param("parentid") String parentid, @Param("userid") String userid);

	List<Rewards> selectByWithdraw(@Param("parentid") String parentid, @Param("userid") String userid);

	List<Rewards> selectByOrderId(String orderid);

	float countByIntegral(String parentid, String userid);

	float countByBonus(@Param("parentid") String parentid, @Param("userid") String userid);

	float countByExtra(@Param("parentid") String parentid, @Param("userid") String userid);

	float countByFans(@Param("parentid") String parentid, @Param("userid") String userid);

	float countBySelfShop(@Param("parentid") String parentid, @Param("userid") String userid);

	float countByRefund(@Param("parentid") String parentid, @Param("userid") String userid);

	List<Rewards> selectByUserIDAndParentID(@Param("page") Page page,
                                            @Param("userid") String userid, @Param("parentid") String parentid);

	List<Rewards> selectByUserIDAndPresentID(@Param("userid") String userid, @Param("presentid") String presentid);

	List<Rewards> selectByType(@Param("page") Page page, @Param("userid") String userid, @Param("type") Integer type);

	List<Rewards> selectBetweenType(@Param("page") Page page, @Param("userid") String userid, @Param("type1") Integer type1,
									@Param("type2") Integer type2);

	List<Rewards> selectByUserID(@Param("page") Page page, @Param("userid") String userid, @Param("level") Integer level,
								 @Param("today") String today, @Param("yesterday") String yesterday);

	List<Rewards> selectByUserID2(@Param("page") Page page, @Param("userid") String userid);
	
	List<Rewards> selectAll(@Param("page") Page page, @Param("type") String type, @Param("parentid") String parentid,
                            @Param("userid") String userid, @Param("presentid") String presentid);
    
    List<Rewards> selectByParentID(@Param("page") Page page, @Param("parentid") String parentid,
                                   @Param("type") String type, @Param("userid") String userid, @Param("presentid") String presentid);

	List<Rewards> selectByAll(Page page, String userid);

	List<Rewards> selectByAllLevel(@Param("page") Page page, @Param("userid") String userid, @Param("level") Integer level,
							@Param("type") Integer type);

	List<Rewards> selectAllByUserID(String userid);

	List<Rewards> selectByPresentID(String presentid);

	int selectByCount(String userid);

	int updateByPrimaryKeySelective(Rewards record);

	int updateByPrimaryKey(Rewards record);

	int countBetweenType(@Param("userid") String userid, @Param("type1") Integer type1, @Param("type2") Integer type2);

	int countByUserIDAndParentID(@Param("userid") String userid, @Param("parentid") String parentid);

	int countByUserID(@Param("userid") String userid, @Param("level") Integer level, @Param("today") String today,
					  @Param("yesterday") String yesterday);

	int countByUserID2(String userid);
	
	int countAll(@Param("type") String type, @Param("parentid") String parentid,
                 @Param("userid") String userid, @Param("presentid") String presentid);
    
    int countByParentID(@Param("parentid") String parentid, @Param("type") String type,
                        @Param("userid") String userid, @Param("presentid") String presentid);

	//所有充值过的粉丝数
	int countByAllLevel1(String userid);// 一级

	int countByAllLevel2(String userid);// 二级

	int countByLevel1And2 (String userid);

	int countByAllLevel3(String userid);// 三级/其他

	//所有粉丝数
	int countByLevel1(String userid);// 一级

	int countByLevel2(String userid);// 二级

	int countByLevel3(String userid);// 三级/其他

	//今日粉丝数
	int countByTodayLevel1(String userid);// 一级

	int countByTodayLevel2(String userid);// 二级

	int countByTodayLevel1And2 (String userid);

	int countByTodayLevel3(String userid);

	//昨日粉丝数
	int countByYesterdayLevel1(String userid);// 一级

	int countByYesterdayLevel2(String userid);// 二级

	int countByYesterdayLevel1And2(String userid);

	int countByYesterdayLevel3(String userid);// 三级/其他

	float countBySelfShopNew(String parentid, String id);
}